package com.jsg.sl651.enums;

import com.jsg.sl651.message.parser.Parser;
import com.jsg.sl651.message.parser.impl.*;
import com.jsg.sl651.util.ByteUtil;
import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 编码要素及标识符枚举
 */
@Getter
@AllArgsConstructor
public enum CodingElementEnum {
    FF0H(new byte[]{(byte) 0xF0}, new byte[]{'T', 'T'}, "观测时间引导符", "观测时间引导符", 0, "", DataDefinitionType.BCD, LocalDateTimeParser.class),
    FF1H(new byte[]{(byte) 0xF1}, new byte[]{'S', 'T'}, "测站编码引导符", "测站编码引导符", 0, "", DataDefinitionType.BCD, RemoteTelemetryStationAddressParser.class),
    FF2H(new byte[]{(byte) 0xF2}, new byte[]{'R', 'G', 'Z', 'S'}, "人工置数", "人工置数", 0, "", DataDefinitionType.HEX, DefaultParser.class),
    FF3H(new byte[]{(byte) 0xF3}, new byte[]{'P', 'I', 'C'}, "图片信息", "图片信息", 0, "字节", DataDefinitionType.HEX, DefaultParser.class),
    FF4H(new byte[]{(byte) 0xF4}, new byte[]{'D', 'R', 'P'}, "1小时内每5分钟时段雨量", "1小时内每5分钟时段雨量(每组雨量占1字节HEX，最大值 25.4毫米，数据中不含小数点:FFH表示非法数据。)", 1, "毫米", DataDefinitionType.HEX, EveryFiveMinutesParser.class),
    FF5H(new byte[]{(byte) 0xF5}, new byte[]{'D', 'R', 'Z', '1'}, "1小时内5分钟间隔相对水位1", "1小时内5分钟间隔相对水位1(每组水位占2字节HEX，分辨力是为厘米，最大值为655.34米，数据中不含小数点:FFFFH 表示非法数据);对于河道闸坝(泵)站分别表示河道水位、闸(站)上水位", 2, "米", DataDefinitionType.HEX, EveryFiveMinutesParser.class),
    FF6H(new byte[]{(byte) 0xF6}, new byte[]{'D', 'R', 'Z', '2'}, "1小时内5分钟间隔相对水位2", "1小时内5分钟间隔相对水位2:对于闸坝(泵)站表示闸(站)下水位。", 2, "米", DataDefinitionType.HEX, DefaultParser.class),
    FF7H(new byte[]{(byte) 0xF7}, new byte[]{'D', 'R', 'Z', '3'}, "1小时内5分钟间隔相对水位3", "1小时内5分钟间隔相对水位3", 2, "米", DataDefinitionType.HEX, EveryFiveMinutesParser.class),
    FF8H(new byte[]{(byte) 0xF8}, new byte[]{'D', 'R', 'Z', '4'}, "1小时内5分钟间隔相对水位4", "1小时内5分钟间隔相对水位4", 2, "米", DataDefinitionType.HEX, EveryFiveMinutesParser.class),
    FF9H(new byte[]{(byte) 0xF9}, new byte[]{'D', 'R', 'Z', '5'}, "1小时内5分钟间隔相对水位5", "1小时内5分钟间隔相对水位5", 2, "米", DataDefinitionType.HEX, EveryFiveMinutesParser.class),
    FFAH(new byte[]{(byte) 0xFA}, new byte[]{'D', 'R', 'Z', '6'}, "1小时内5分钟间隔相对水位6", "1小时内5分钟间隔相对水位6", 2, "米", DataDefinitionType.HEX, EveryFiveMinutesParser.class),
    FFBH(new byte[]{(byte) 0xFB}, new byte[]{'D', 'R', 'Z', '7'}, "1小时内5分钟间隔相对水位7", "1小时内5分钟间隔相对水位7", 2, "米", DataDefinitionType.HEX, EveryFiveMinutesParser.class),
    FFCH(new byte[]{(byte) 0xFC}, new byte[]{'D', 'R', 'Z', '8'}, "1小时内5分钟间隔相对水位8", "1小时内5分钟间隔相对水位8", 2, "米", DataDefinitionType.HEX, EveryFiveMinutesParser.class),
    FFDH(new byte[]{(byte) 0xFD}, new byte[]{'D', 'A', 'T', 'A'}, "流速批量数据传输", "流速批量数据传输", 0, "", DataDefinitionType.HEX, DefaultParser.class),
    F01H(new byte[]{(byte) 0x01}, new byte[]{'A', 'C'}, "断面面积", "断面面积", 2, "平方米", DataDefinitionType.BCD, DoubleParser.class),
    F02H(new byte[]{(byte) 0x02}, new byte[]{'A', 'I'}, "瞬时气温", "瞬时气温", 1, "摄氏度", DataDefinitionType.BCD, DoubleParser.class),
    F03H(new byte[]{(byte) 0x03}, new byte[]{'C'}, "瞬时水温", "瞬时水温", 1, "摄氏度", DataDefinitionType.BCD, DoubleParser.class),
    F04H(new byte[]{(byte) 0x04}, new byte[]{'D', 'R', 'x', 'n', 'n'}, "时间步长码", "时间步长码", 0, "", DataDefinitionType.BCD, LongParser.class),
    F05H(new byte[]{(byte) 0x05}, new byte[]{'D', 'T'}, "时段长,降水、引排水、抽水历时", "时段长,降水、引排水、抽水历时", 0, "小时.分钟", DataDefinitionType.BCD, DateTimeParser.class),
    F06H(new byte[]{(byte) 0x06}, new byte[]{'E', 'D'}, "日蒸发量", "日蒸发量", 1, "毫米", DataDefinitionType.BCD, DoubleParser.class),
    F07H(new byte[]{(byte) 0x07}, new byte[]{'E', 'J'}, "当前蒸发", "当前蒸发", 1, "毫米", DataDefinitionType.BCD, DoubleParser.class),
    F08H(new byte[]{(byte) 0x08}, new byte[]{'F', 'L'}, "气压", "气压", 0, "百帕", DataDefinitionType.BCD, LongParser.class),
    F09H(new byte[]{(byte) 0x09}, new byte[]{'G', 'H'}, "闸坝、水库闸门开启高度", "闸坝、水库闸门开启高度", 2, "米", DataDefinitionType.BCD, DoubleParser.class),
    F0AH(new byte[]{(byte) 0x0A}, new byte[]{'G', 'N'}, "输水设备、闸门(组)编号", "输水设备、闸门(组)编号", 0, "", DataDefinitionType.BCD, LongParser.class),
    // todo 这里需要看文档特殊处理
    F0BH(new byte[]{(byte) 0x0B}, new byte[]{'G', 'S'}, "输水设备类别", "输水设备类别", 0, "", DataDefinitionType.BCD, WaterConveyanceFacilityParser.class),
    F0CH(new byte[]{(byte) 0x0C}, new byte[]{'G', 'T'}, "水库、闸坝闸门开启孔数", "水库、闸坝闸门开启孔数", 0, "孔", DataDefinitionType.BCD, LongParser.class),
    F0DH(new byte[]{(byte) 0x0D}, new byte[]{'G', 'T', 'P'}, "地温", "地温", 1, "摄氏度", DataDefinitionType.BCD, DoubleParser.class),
    F0EH(new byte[]{(byte) 0x0E}, new byte[]{'H'}, "地下水瞬时埋深", "地下水瞬时埋深", 2, "米", DataDefinitionType.BCD, DoubleParser.class),
    F0FH(new byte[]{(byte) 0x0F}, new byte[]{'H', 'W'}, "波浪高度", "波浪高度", 2, "米", DataDefinitionType.BCD, DoubleParser.class),
    F10H(new byte[]{(byte) 0x10}, new byte[]{'M', '1', '0'}, "10厘米处土壤含水量", "10厘米处土壤含水量", 1, "百分比", DataDefinitionType.BCD, DoubleParser.class),
    F11H(new byte[]{(byte) 0x11}, new byte[]{'M', '2', '0'}, "20厘米处土壤含水量", "20厘米处土壤含水量", 1, "百分比", DataDefinitionType.BCD, DoubleParser.class),
    F12H(new byte[]{(byte) 0x12}, new byte[]{'M', '3', '0'}, "30厘米处土壤含水量", "30厘米处土壤含水量", 1, "百分比", DataDefinitionType.BCD, DoubleParser.class),
    F13H(new byte[]{(byte) 0x13}, new byte[]{'M', '4', '0'}, "40厘米处土壤含水量", "40厘米处土壤含水量", 1, "百分比", DataDefinitionType.BCD, DoubleParser.class),
    F14H(new byte[]{(byte) 0x14}, new byte[]{'M', '5', '0'}, "50厘米处土壤含水量", "50厘米处土壤含水量", 1, "百分比", DataDefinitionType.BCD, DoubleParser.class),
    F15H(new byte[]{(byte) 0x15}, new byte[]{'M', '6', '0'}, "60厘米处土壤含水量", "60厘米处土壤含水量", 1, "百分比", DataDefinitionType.BCD, DoubleParser.class),
    F16H(new byte[]{(byte) 0x16}, new byte[]{'M', '8', '0'}, "80厘米处土壤含水量", "80厘米处土壤含水量", 1, "百分比", DataDefinitionType.BCD, DoubleParser.class),
    F17H(new byte[]{(byte) 0x17}, new byte[]{'M', '1', '0', '0'}, "100厘米处土壤含水量", "100厘米处土壤含水量", 1, "百分比", DataDefinitionType.BCD, DoubleParser.class),
    F18H(new byte[]{(byte) 0x18}, new byte[]{'M', 'S', 'T'}, "湿度", "湿度", 1, "百分比", DataDefinitionType.BCD, DoubleParser.class),
    F19H(new byte[]{(byte) 0x19}, new byte[]{'N', 'S'}, "开机台数", "开机台数", 0, "台", DataDefinitionType.BCD, LongParser.class),
    F1AH(new byte[]{(byte) 0x1A}, new byte[]{'P', '1'}, "1小时时段降水量", "1小时时段降水量", 1, "毫米", DataDefinitionType.BCD, DoubleParser.class),
    F1BH(new byte[]{(byte) 0x1B}, new byte[]{'P', '2'}, "2小时时段降水量", "2小时时段降水量", 1, "毫米", DataDefinitionType.BCD, DoubleParser.class),
    F1CH(new byte[]{(byte) 0x1C}, new byte[]{'P', '3'}, "3小时时段降水量", "3小时时段降水量", 1, "毫米", DataDefinitionType.BCD, DoubleParser.class),
    F1DH(new byte[]{(byte) 0x1D}, new byte[]{'P', '6'}, "6小时时段降水量", "6小时时段降水量", 1, "毫米", DataDefinitionType.BCD, DoubleParser.class),
    F1EH(new byte[]{(byte) 0x1E}, new byte[]{'P', '1', '2'}, "12小时时段降水量", "12小时时段降水量", 1, "毫米", DataDefinitionType.BCD, DoubleParser.class),
    F1FH(new byte[]{(byte) 0x1F}, new byte[]{'P', 'D'}, "日降水量", "日降水量", 1, "毫米", DataDefinitionType.BCD, DoubleParser.class),
    F20H(new byte[]{(byte) 0x20}, new byte[]{'P', 'J'}, "当前降水量", "当前降水量", 1, "毫米", DataDefinitionType.BCD, DoubleParser.class),
    F21H(new byte[]{(byte) 0x21}, new byte[]{'P', 'N', '0', '1'}, "1分钟时段降水量", "1分钟时段降水量", 1, "毫米", DataDefinitionType.BCD, DoubleParser.class),
    F22H(new byte[]{(byte) 0x22}, new byte[]{'P', 'N', 'O', '5'}, "5分钟时段降水量", "5分钟时段降水量", 1, "毫米", DataDefinitionType.BCD, DoubleParser.class),
    F23H(new byte[]{(byte) 0x23}, new byte[]{'P', 'N', '1', '0'}, "10分钟时段降水量", "10分钟时段降水量", 1, "毫米", DataDefinitionType.BCD, DoubleParser.class),
    F24H(new byte[]{(byte) 0x24}, new byte[]{'P', 'N', '3', '0'}, "30分钟时段降水量", "30分钟时段降水量", 1, "毫米", DataDefinitionType.BCD, DoubleParser.class),
    F25H(new byte[]{(byte) 0x25}, new byte[]{'P', 'R'}, "暴雨量", "暴雨量", 1, "毫米", DataDefinitionType.BCD, DoubleParser.class),
    F26H(new byte[]{(byte) 0x26}, new byte[]{'P', 'T'}, "降水量累计值", "降水量累计值", 1, "毫米", DataDefinitionType.BCD, DoubleParser.class),
    F27H(new byte[]{(byte) 0x27}, new byte[]{'Q'}, "瞬时流量、抽水流量", "瞬时流量、抽水流量", 3, "立方米/秒", DataDefinitionType.BCD, DoubleParser.class),
    F28H(new byte[]{(byte) 0x28}, new byte[]{'Q', '1'}, "取(排)水口流量1", "取(排)水口流量1", 3, "立方米/秒", DataDefinitionType.BCD, DoubleParser.class),
    F29H(new byte[]{(byte) 0x29}, new byte[]{'Q', '2'}, "取(排)水口流量2", "取(排)水口流量2", 3, "立方米/秒", DataDefinitionType.BCD, DoubleParser.class),
    F2AH(new byte[]{(byte) 0x2A}, new byte[]{'Q', '3'}, "取(排)水口流量3", "取(排)水口流量3", 3, "立方米/秒", DataDefinitionType.BCD, DoubleParser.class),
    F2BH(new byte[]{(byte) 0x2B}, new byte[]{'Q', '4'}, "取(排)水口流量4", "取(排)水口流量4", 3, "立方米/秒", DataDefinitionType.BCD, DoubleParser.class),
    F2CH(new byte[]{(byte) 0x2C}, new byte[]{'Q', '5'}, "取(排)水口流量5", "取(排)水口流量5", 3, "立方米/秒", DataDefinitionType.BCD, DoubleParser.class),
    F2DH(new byte[]{(byte) 0x2D}, new byte[]{'Q', '6'}, "取(排)水口流量6", "取(排)水口流量6", 3, "立方米/秒", DataDefinitionType.BCD, DoubleParser.class),
    F2EH(new byte[]{(byte) 0x2E}, new byte[]{'Q', '7'}, "取(排)水口流量7", "取(排)水口流量7", 3, "立方米/秒", DataDefinitionType.BCD, DoubleParser.class),
    F2FH(new byte[]{(byte) 0x2F}, new byte[]{'Q', '8'}, "取(排)水口流量8", "取(排)水口流量8", 3, "立方米/秒", DataDefinitionType.BCD, DoubleParser.class),
    F30H(new byte[]{(byte) 0x30}, new byte[]{'Q', 'A'}, "总出库流量、过闸总流量", "总出库流量、过闸总流量", 3, "立方米/秒", DataDefinitionType.BCD, DoubleParser.class),
    F31H(new byte[]{(byte) 0x31}, new byte[]{'Q', 'Z'}, "输水设备流量、过闸(组)流量", "输水设备流量、过闸(组)流量", 3, "立方米/秒", DataDefinitionType.BCD, DoubleParser.class),
    F32H(new byte[]{(byte) 0x32}, new byte[]{'S', 'W'}, "输沙量", "输沙量", 3, "万吨", DataDefinitionType.BCD, DoubleParser.class),
    // todo  风向需要特殊处理
    F33H(new byte[]{(byte) 0x33}, new byte[]{'U', 'C'}, "风向", "风向", 0, "", DataDefinitionType.BCD, WindDirectionParser.class),
    F34H(new byte[]{(byte) 0x34}, new byte[]{'U', 'E'}, "风力(级)", "风力(级)", 0, "", DataDefinitionType.BCD, WindForceLevelParser.class),
    F35H(new byte[]{(byte) 0x35}, new byte[]{'U', 'S'}, "风速", "风速", 1, "米/秒", DataDefinitionType.BCD, DoubleParser.class),
    F36H(new byte[]{(byte) 0x36}, new byte[]{'V', 'A'}, "断面平均流速", "断面平均流速", 3, "米/秒", DataDefinitionType.BCD, DoubleParser.class),
    F37H(new byte[]{(byte) 0x37}, new byte[]{'V', 'J'}, "当前瞬时流速", "当前瞬时流速", 3, "米/秒", DataDefinitionType.BCD, DoubleParser.class),
    F38H(new byte[]{(byte) 0x38}, new byte[]{'V', 'T'}, "电源电压", "电源电压", 2, "伏特", DataDefinitionType.BCD, DoubleParser.class),
    F39H(new byte[]{(byte) 0x39}, new byte[]{'Z'}, "瞬时河道水位、湖位", "瞬时河道水位、湖位", 3, "米", DataDefinitionType.BCD, DoubleParser.class),
    F3AH(new byte[]{(byte) 0x3A}, new byte[]{'Z', 'B'}, "库(闸、站)下水位", "库(闸、站)下水位", 3, "米", DataDefinitionType.BCD, DoubleParser.class),
    F3BH(new byte[]{(byte) 0x3B}, new byte[]{'Z', 'U'}, "库(闸、站)上水位", "库(闸、站)上水位", 3, "米", DataDefinitionType.BCD, DoubleParser.class),
    F3CH(new byte[]{(byte) 0x3C}, new byte[]{'Z', '1'}, "取(排)水口水位1", "取(排)水口水位1", 3, "米", DataDefinitionType.BCD, DoubleParser.class),
    F3DH(new byte[]{(byte) 0x3D}, new byte[]{'Z', '2'}, "取(排)水口水位2", "取(排)水口水位2", 3, "米", DataDefinitionType.BCD, DoubleParser.class),
    F3EH(new byte[]{(byte) 0x3E}, new byte[]{'Z', '3'}, "取(排)水口水位3", "取(排)水口水位3", 3, "米", DataDefinitionType.BCD, DoubleParser.class),
    F3FH(new byte[]{(byte) 0x3F}, new byte[]{'Z', '4'}, "取(排)水口水位4", "取(排)水口水位4", 3, "米", DataDefinitionType.BCD, DoubleParser.class),
    F40H(new byte[]{(byte) 0x40}, new byte[]{'Z', '5'}, "取(排)水口水位5", "取(排)水口水位5", 3, "米", DataDefinitionType.BCD, DoubleParser.class),
    F41H(new byte[]{(byte) 0x41}, new byte[]{'Z', '6'}, "取(排)水口水位6", "取(排)水口水位6", 3, "米", DataDefinitionType.BCD, DoubleParser.class),
    F42H(new byte[]{(byte) 0x42}, new byte[]{'Z', '7'}, "取(排)水口水位7", "取(排)水口水位7", 3, "米", DataDefinitionType.BCD, DoubleParser.class),
    F43H(new byte[]{(byte) 0x43}, new byte[]{'Z', '8'}, "取(排)水口水位8", "取(排)水口水位8", 3, "米", DataDefinitionType.BCD, DoubleParser.class),
    F44H(new byte[]{(byte) 0x44}, new byte[]{'S', 'Q'}, "含沙量", "含沙量", 3, "千克/立方米", DataDefinitionType.BCD, DoubleParser.class),
    // todo  遥测站状态及报警信息需要特殊处理 遥测站状态及报警信息(定义见表 58)
    F45H(new byte[]{(byte) 0x45}, new byte[]{'Z', 'T'}, "遥测站状态及报警信息", "遥测站状态及报警信息(定义见表 58)", 0, "", DataDefinitionType.BCD, StationStatusParser.class),
    F46H(new byte[]{(byte) 0x46}, new byte[]{'P', 'H'}, "pH 值", "pH 值", 2, "", DataDefinitionType.BCD, DoubleParser.class),
    F47H(new byte[]{(byte) 0x47}, new byte[]{'D', 'O'}, "溶解氧", "溶解氧", 1, "毫克/升", DataDefinitionType.BCD, DoubleParser.class),
    F48H(new byte[]{(byte) 0x48}, new byte[]{'C', 'O', 'N', 'D'}, "电导率", "电导率", 0, "微西门/厘米", DataDefinitionType.BCD, LongParser.class),
    F49H(new byte[]{(byte) 0x49}, new byte[]{'T', 'U', 'R', 'B'}, "浊度", "浊度", 0, "度", DataDefinitionType.BCD, LongParser.class),
    F4AH(new byte[]{(byte) 0x4A}, new byte[]{'C', 'O', 'D', 'M', 'N'}, "高锰酸盐指数", "高锰酸盐指数", 1, "毫克/升", DataDefinitionType.BCD, DoubleParser.class),
    F4BH(new byte[]{(byte) 0x4B}, new byte[]{'R', 'E', 'D', 'O', 'X'}, "氧化还原电位", "氧化还原电位", 1, "毫伏", DataDefinitionType.BCD, DoubleParser.class),
    F4CH(new byte[]{(byte) 0x4C}, new byte[]{'N', 'H', '4', 'N'}, "氨氮", "氨氮", 2, "毫克/升", DataDefinitionType.BCD, DoubleParser.class),
    F4DH(new byte[]{(byte) 0x4D}, new byte[]{'T', 'P'}, "总磷", "总磷", 3, "毫克/升", DataDefinitionType.BCD, DoubleParser.class),
    F4EH(new byte[]{(byte) 0x4E}, new byte[]{'T', 'N'}, "总氮", "总氮", 2, "毫克/升", DataDefinitionType.BCD, DoubleParser.class),
    F4FH(new byte[]{(byte) 0x4F}, new byte[]{'T', 'O', 'C'}, "总有机碳", "总有机碳", 2, "毫克/升", DataDefinitionType.BCD, DoubleParser.class),
    F50H(new byte[]{(byte) 0x50}, new byte[]{'C', 'U'}, "铜", "铜", 4, "毫克/升", DataDefinitionType.BCD, DoubleParser.class),
    F51H(new byte[]{(byte) 0x51}, new byte[]{'Z', 'N'}, "锌", "锌", 4, "毫克/升", DataDefinitionType.BCD, DoubleParser.class),
    F52H(new byte[]{(byte) 0x52}, new byte[]{'S', 'E'}, "硒", "硒", 5, "毫克/升", DataDefinitionType.BCD, DoubleParser.class),
    F53H(new byte[]{(byte) 0x53}, new byte[]{'A', 'S'}, "砷", "砷", 5, "毫克/升", DataDefinitionType.BCD, DoubleParser.class),
    F54H(new byte[]{(byte) 0x54}, new byte[]{'T', 'H', 'G'}, "总汞", "总汞", 5, "毫克/升", DataDefinitionType.BCD, DoubleParser.class),
    F55H(new byte[]{(byte) 0x55}, new byte[]{'C', 'D'}, "镉", "镉", 5, "毫克/升", DataDefinitionType.BCD, DoubleParser.class),
    F56H(new byte[]{(byte) 0x56}, new byte[]{'P', 'B'}, "铅", "铅", 5, "毫克/升", DataDefinitionType.BCD, DoubleParser.class),
    F57H(new byte[]{(byte) 0x57}, new byte[]{'C', 'H', 'L', 'A'}, "叶绿素a", "叶绿素a", 2, "毫克/升", DataDefinitionType.BCD, DoubleParser.class),
    F58H(new byte[]{(byte) 0x58}, new byte[]{'W', 'P', '1'}, "水压1", "水压1", 2, "千帕", DataDefinitionType.BCD, DoubleParser.class),
    F59H(new byte[]{(byte) 0x59}, new byte[]{'W', 'P', '2'}, "水压2", "水压2", 2, "千帕", DataDefinitionType.BCD, DoubleParser.class),
    F5AH(new byte[]{(byte) 0x5A}, new byte[]{'W', 'P', '3'}, "水压3", "水压3", 2, "千帕", DataDefinitionType.BCD, DoubleParser.class),
    F5BH(new byte[]{(byte) 0x5B}, new byte[]{'W', 'P', '4'}, "水压4", "水压4", 2, "千帕", DataDefinitionType.BCD, DoubleParser.class),
    F5CH(new byte[]{(byte) 0x5C}, new byte[]{'W', 'P', '5'}, "水压5", "水压5", 2, "千帕", DataDefinitionType.BCD, DoubleParser.class),
    F5DH(new byte[]{(byte) 0x5D}, new byte[]{'W', 'P', '6'}, "水压6", "水压6", 2, "千帕", DataDefinitionType.BCD, DoubleParser.class),
    F5EH(new byte[]{(byte) 0x5E}, new byte[]{'W', 'P', '7'}, "水压7", "水压7", 2, "千帕", DataDefinitionType.BCD, DoubleParser.class),
    F5FH(new byte[]{(byte) 0x5F}, new byte[]{'W', 'P', '8'}, "水压8", "水压8", 2, "千帕", DataDefinitionType.BCD, DoubleParser.class),
    F60H(new byte[]{(byte) 0x60}, new byte[]{'S', 'Y', 'L', '1'}, "水表1剩余水量", "水表1剩余水量", 3, "立方米", DataDefinitionType.BCD, DoubleParser.class),
    F61H(new byte[]{(byte) 0x61}, new byte[]{'S', 'Y', 'L', '2'}, "水表2剩余水量", "水表2剩余水量", 3, "立方米", DataDefinitionType.BCD, DoubleParser.class),
    F62H(new byte[]{(byte) 0x62}, new byte[]{'S', 'Y', 'L', '3'}, "水表3剩余水量", "水表3剩余水量", 3, "立方米", DataDefinitionType.BCD, DoubleParser.class),
    F63H(new byte[]{(byte) 0x63}, new byte[]{'S', 'Y', 'L', '4'}, "水表4剩余水量", "水表4剩余水量", 3, "立方米", DataDefinitionType.BCD, DoubleParser.class),
    F64H(new byte[]{(byte) 0x64}, new byte[]{'S', 'Y', 'L', '5'}, "水表5剩余水量", "水表5剩余水量", 3, "立方米", DataDefinitionType.BCD, DoubleParser.class),
    F65H(new byte[]{(byte) 0x65}, new byte[]{'S', 'Y', 'L', '6'}, "水表6剩余水量", "水表6剩余水量", 3, "立方米", DataDefinitionType.BCD, DoubleParser.class),
    F66H(new byte[]{(byte) 0x66}, new byte[]{'S', 'Y', 'L', '7'}, "水表7剩余水量", "水表7剩余水量", 3, "立方米", DataDefinitionType.BCD, DoubleParser.class),
    F67H(new byte[]{(byte) 0x67}, new byte[]{'S', 'Y', 'L', '8'}, "水表8剩余水量", "水表8剩余水量", 3, "立方米", DataDefinitionType.BCD, DoubleParser.class),
    F68H(new byte[]{(byte) 0x68}, new byte[]{'S', 'B', 'L', '1'}, "水表1每小时水量", "水表1每小时水量", 2, "立方米/小时", DataDefinitionType.BCD, DoubleParser.class),
    F69H(new byte[]{(byte) 0x69}, new byte[]{'S', 'B', 'L', '2'}, "水表2每小时水量", "水表2每小时水量", 2, "立方米/小时", DataDefinitionType.BCD, DoubleParser.class),
    F6AH(new byte[]{(byte) 0x6A}, new byte[]{'S', 'B', 'L', '3'}, "水表3每小时水量", "水表3每小时水量", 2, "立方米/小时", DataDefinitionType.BCD, DoubleParser.class),
    F6BH(new byte[]{(byte) 0x6B}, new byte[]{'S', 'B', 'L', '4'}, "水表4每小时水量", "水表4每小时水量", 2, "立方米/小时", DataDefinitionType.BCD, DoubleParser.class),
    F6CH(new byte[]{(byte) 0x6C}, new byte[]{'S', 'B', 'L', '5'}, "水表5每小时水量", "水表5每小时水量", 2, "立方米/小时", DataDefinitionType.BCD, DoubleParser.class),
    F6DH(new byte[]{(byte) 0x6D}, new byte[]{'S', 'B', 'L', '6'}, "水表6每小时水量", "水表6每小时水量", 2, "立方米/小时", DataDefinitionType.BCD, DoubleParser.class),
    F6EH(new byte[]{(byte) 0x6E}, new byte[]{'S', 'B', 'L', '7'}, "水表7每小时水量", "水表7每小时水量", 2, "立方米/小时", DataDefinitionType.BCD, DoubleParser.class),
    F6FH(new byte[]{(byte) 0x6F}, new byte[]{'S', 'B', 'L', '8'}, "水表8每小时水量", "水表8每小时水量", 2, "立方米/小时", DataDefinitionType.BCD, DoubleParser.class),
    F70H(new byte[]{(byte) 0x70}, new byte[]{'V', 'T', 'A'}, "交流A相电压", "交流A相电压", 1, "伏特", DataDefinitionType.BCD, DoubleParser.class),
    F71H(new byte[]{(byte) 0x71}, new byte[]{'V', 'T', 'B'}, "交流B相电压", "交流B相电压", 1, "伏特", DataDefinitionType.BCD, DoubleParser.class),
    F72H(new byte[]{(byte) 0x72}, new byte[]{'V', 'T', 'C'}, "交流C相电压", "交流C相电压", 1, "伏特", DataDefinitionType.BCD, DoubleParser.class),
    F73H(new byte[]{(byte) 0x73}, new byte[]{'V', 'I', 'A'}, "交流A相电流", "交流A相电流", 1, "安培", DataDefinitionType.BCD, DoubleParser.class),
    F74H(new byte[]{(byte) 0x74}, new byte[]{'V', 'I', 'B'}, "交流B相电流", "交流B相电流", 1, "安培", DataDefinitionType.BCD, DoubleParser.class),
    F75H(new byte[]{(byte) 0x75}, new byte[]{'V', 'I', 'C'}, "交流C相电流", "交流C相电流", 1, "安培", DataDefinitionType.BCD, DoubleParser.class),
    ;

    private final byte[] hexBytes;
    private final byte[] asciiBytes;
    private final String name;
    private final String desc;
    // 精度
    private final int precision;
    private final String unit;
    private final DataDefinitionType dataDefinitionType;
    private final Class<? extends Parser<?>> parser;

}
